﻿using System;
using System.Net;
using System.Net.Mail;
using System.Windows.Forms;
using AiFrame.Base.Core;

namespace AiFrame.Base.WinUI.Windows.UI
{
    public partial class ReportErrorWindow : Form
    {
        private Exception _exception;

        public ReportErrorWindow(Exception exception)
        {
            InitializeComponent();
            _exception = exception;

            headerLabel.Text =
                ConfigurationProxy.ApplicationName + " verursachte einen Programmfehler " +
                "und kann wohlmöglich nicht fortgeführt werden.";

            reportCompanyLabel.Text = string.Format("Dieses Problem bitte auch an {0} berichten.", 
                ConfigurationProxy.CompanyName);
            
            stackTraceTb.Text = _exception.Message + Environment.NewLine + Environment.NewLine + 
                _exception.StackTrace;

            sendProblemButton.Enabled = ConfigurationProxy.NetworkCredential != null;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void sendProblemButton_Click(object sender, EventArgs e)
        {

            try
            {
                if (ConfigurationProxy.NetworkCredential == null)
                    return;

                SmtpClient smtpClient = new SmtpClient(ConfigurationProxy.ProblemDialogSmtpServer);
                smtpClient.Credentials = ConfigurationProxy.NetworkCredential;

                MailMessage mail = new MailMessage(
                    ConfigurationProxy.ProblemDialogMailAddress, ConfigurationProxy.ProblemDialogMailAddress,
                    ConfigurationProxy.ApplicationName + " - Fehlerberichterstattung",
                    _exception.Message + Environment.NewLine + Environment.NewLine + _exception.StackTrace);

                smtpClient.Send(mail);

                MessageBox.Show("Der Fehler wurde erfolgreich übermittelt", "Übermittlung abgeschlossen",
                            MessageBoxButtons.OK, MessageBoxIcon.Information);
                Close();
            }
            catch (Exception e1)
            {
                MessageBox.Show("Fehler beim Sender der Email: " + e1.Message,
                                "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);

            }

            
        }
    }
}
